import { get, post, put, del } from '@/utils/request'

/**
 * 专家登录
 * @param {Object} data - 登录参数 { username, password }
 * @returns {Promise<{ token: string }>}
 */
export function expertLogin(data) {
  // 转换参数格式，因为后端使用 @RequestParam
  const params = new URLSearchParams()
  params.append('username', data.username)
  params.append('password', data.password)
  
  return post('/expert/login', params, {
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    }
  })
}

/**
 * 获取专家信息
 * @returns {Promise<{
 *   id: number,
 *   username: string,
 *   name: string,
 *   title: string,
 *   department: string,
 *   avatar: string,
 *   introduction: string,
 *   status: number,
 *   createTime: string,
 *   updateTime: string
 * }>}
 */
export function getExpertInfo() {
  return get('/expert/info')
}

/**
 * 更新专家在线状态
 * @param {number} status - 在线状态 1:在线 0:离线
 * @returns {Promise}
 */
export function updateStatus(status) {
  const params = new URLSearchParams()
  params.append('status', status ? 1 : 0)
  
  return put('/expert/status', params, {
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    }
  })
}

/**
 * 获取专家列表
 * @param {Object} params - 查询参数 { pageNum, pageSize, username, name, department, status }
 */
export function getExpertList(params) {
  const searchParams = new URLSearchParams()
  searchParams.append('pageNum', params.pageNum || 1)
  searchParams.append('pageSize', params.pageSize || 10)
  if (params.username) searchParams.append('username', params.username)
  if (params.name) searchParams.append('name', params.name)
  if (params.department) searchParams.append('department', params.department)
  if (params.status !== undefined && params.status !== '') searchParams.append('status', params.status)
  
  return get(`/admin/expert/list?${searchParams.toString()}`)
}

/**
 * 获取专家详情
 * @param {number} id - 专家ID
 * @returns {Promise<Object>} 专家详情数据
 */
export function getExpertDetail(id) {
  return get(`/admin/expert/${id}`).then(response => {
    console.log('专家详情原始响应:', response)
    
    // 如果响应直接就是数据对象（包含专家信息字段）
    if (response && typeof response === 'object' && response.id) {
      return {
        code: 0,
        data: response,
        message: '获取成功'
      }
    }
    
    // 如果是标准响应格式
    if (response && response.code === 0 && response.data) {
      return response
    }
    
    // 处理错误情况
    throw new Error(response?.message || '获取专家详情失败')
  }).catch(error => {
    console.error('获取专家详情接口错误:', error)
    throw error
  })
}

/**
 * 新增专家
 * @param {Object} data - 专家信息
 */
export function addExpert(data) {
  return post('/admin/expert', data)
}

/**
 * 更新专家信息
 * @param {Object} data - 专家信息
 */
export function updateExpert(data) {
  return put('/admin/expert', data)
}

/**
 * 删除专家
 * @param {number} id - 专家ID
 */
export function deleteExpert(id) {
  return del(`/admin/expert/${id}`)
}

/**
 * 更新专家状态
 * @param {number} id - 专家ID
 * @param {number} status - 状态：0-停诊，1-接诊
 */
export function updateExpertStatus(id, status) {
  return put('/admin/expert/status', null, {
    params: { id, status }
  })
} 